package com.diego.sistema.compras;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.diego.sistema.producto.Producto;
import com.diego.sistema.producto.ProductoRN;
import com.diego.sistema.proveedor.Proveedor;
import com.diego.sistema.proveedor.ProveedorRN;

/**@author Diego Benitez - xuser83@hotmail.com*/

@ManagedBean(name = "registroCompras")
@ViewScoped
public class RegistroCompraBean implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private Proveedor proveedorSeleccionado = new Proveedor();
	private Proveedor proveedorBuscado = new Proveedor();
	
	private Producto productoSeleccionado = new Producto();
	private Producto productoBuscado = new Producto();
	
	private Compra compra = new Compra();	
	
	private List<Compra> lista = new ArrayList<Compra>();
	
	private String nroFactura;
	
	private float total;
	
	private void otraCompra() {
		this.productoBuscado = new Producto();
		this.proveedorBuscado = new Proveedor();
		this.nroFactura = "";
		this.lista.clear();
		this.total = 0;
	}
	
	public String finalizarCompra() {
		
		if(!this.lista.isEmpty()) {
		
			CompraRN compraRN = new CompraRN();
			
			for(Compra compra : this.lista) {
				
				compra.setFechaCompra(new Date());
				compra.setNroFactura(this.nroFactura);
				compraRN.registraCompra(compra);
			}
		}
		otraCompra();
		return null;
	}
	
	public String agregarALaTabla() {
		
		this.compra.setProducto(this.productoBuscado);
		this.compra.setProveedor(this.proveedorBuscado);
		this.lista.add(this.compra);
		this.compra = new Compra();
		this.productoBuscado = new Producto();
		calcularTotal();
		return null;
	}
	
	private void calcularTotal() {
		
		this.total = 0;
		
		if(this.lista != null &&
				!this.lista.isEmpty()) {
		for(Compra c : this.lista) {
			total += (c.getCantidad() *c.getCosto());
		}	
		}
	}
	
	public List<Compra> getLista() {
		return lista;
	}

	public void setLista(List<Compra> lista) {
		this.lista = lista;
	}

	public String buscarProveedorPorNombre() {
		
		ProveedorRN proveedorRN = new ProveedorRN();
		proveedorBuscado = new Proveedor();
		
		if(this.proveedorSeleccionado.getNombre() != null
				&& !this.proveedorSeleccionado.getNombre().equals("")
				&& !this.proveedorSeleccionado.equals(null)) {
			
			proveedorBuscado = proveedorRN.buscarPorNombre(this.proveedorSeleccionado.getNombre());
		}
		proveedorSeleccionado = new Proveedor();
		return null;
	}
		
	public String buscarProductoPorBarra() {
		
		ProductoRN productoRN = new ProductoRN();
		productoBuscado = new Producto();
		
		if(this.productoSeleccionado.getBarras() != null
				&& !this.productoSeleccionado.getBarras().equals("")) {
			
			productoBuscado = productoRN.buscarPorBarras(this.productoSeleccionado.getBarras());
		}
		this.productoSeleccionado = new Producto();;
		return null;
	}

	public Proveedor getProveedorSeleccionado() {
		return proveedorSeleccionado;
	}

	public void setProveedorSeleccionado(Proveedor proveedorSeleccionado) {
		this.proveedorSeleccionado = proveedorSeleccionado;
	}

	public Proveedor getProveedorBuscado() {
		return proveedorBuscado;
	}

	public void setProveedorBuscado(Proveedor proveedorBuscado) {
		this.proveedorBuscado = proveedorBuscado;
	}

	public Producto getProductoSeleccionado() {
		return productoSeleccionado;
	}

	public void setProductoSeleccionado(Producto productoSeleccionado) {
		this.productoSeleccionado = productoSeleccionado;
	}

	public Producto getProductoBuscado() {
		return productoBuscado;
	}

	public void setProductoBuscado(Producto productoBuscado) {
		this.productoBuscado = productoBuscado;
	}

	public Compra getCompra() {
		return compra;
	}

	public void setCompra(Compra compra) {
		this.compra = compra;
	}

	public float getTotal() {
		return total;
	}

	public void setTotal(float total) {
		this.total = total;
	}

	public String getNroFactura() {
		return this.nroFactura;
	}

	public void setNroFactura(String nroFactura) {
		this.nroFactura = nroFactura;
	}
	
	

}
